package ar.edu.unq.edp.futbol.usuarios;

import java.util.concurrent.CyclicBarrier;

import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;


import persistencia.Fecha;
import unq.equipos.dom.Equipo;
import unq.equipos.dom.partidos.PartidoCopa;
import unq.equipos.dom.partidos.PartidoSimple;

public class UsuarioPartidoCopa extends UsuarioPartido<PartidoCopa> {

	private Fecha fechaOne, fechaTwo;

	public UsuarioPartidoCopa(CyclicBarrier barrier, String equipoOne,
			String equipoTwo, Fecha fechaOne, Fecha fechaTwo) {
		super(barrier, equipoOne, equipoTwo);
		this.fechaOne = fechaOne;
		this.fechaTwo = fechaTwo; 
		
	}

	@Override
	public PartidoCopa ejecutarTarea(Session session) {
		PartidoCopa copa =  new PartidoCopa();
		copa.setPartidoUno(this.buscarPartido(this.getEquipoOne(),this.getEquipoTwo(), fechaOne, session));
		copa.setPartidoDos(this.buscarPartido(this.getEquipoTwo(),this.getEquipoOne(), fechaTwo, session));
		return copa;
	}
	
	private PartidoSimple buscarPartido(String equipoOne, String equipoTwo,
			Fecha fecha, Session session) {
		return (PartidoSimple)session.createCriteria(PartidoSimple.class)
		.add(Restrictions.ilike("equipoLocal", equipoOne))
		.add(Restrictions.ilike("equipoVisitante", equipoTwo))
		.add(Restrictions.ilike("fecha", fecha))
		.uniqueResult();
	}

	public String getEquipoOne(){
		return this.getEquipoLocal();
	}
	public String getEquipoTwo(){
		return this.getEquipoVisitante();
	}
}
